With exposure of more and more disadvantages of an existing network and increasing requirements of people on network performance, researchers have to add many complex functions to structure system of a router, such as Open Shortest Path First (OSPF), a Border Gateway Protocol (BGP), multicast, service differentiation, traffic engineering, Network Address Translation (NAT), a firewall, Multi-Protocol Label Switching (MPLS) and so on. This made switching equipment such as a router more and more bloated and a space for performance improvement more and narrower.
However, entirely different from the dilemma in the field of networks, the field of computers is developed rapidly. In careful review of the field of computers, it is easily found that the key is a simple and available hardware bottom layer (x86 instruction set) found in the field of computers. With such a common hardware bottom layer, both application programs and operating systems are rapidly developed in terms of software. Nowadays, many persons advocating to redesign a system structure of a computer network believe that: the success in the field of computers may be copied in the network to solve all problems encountered by the network at present. Under the guidance of such a concept, a future network will be constructed as follows: a bottom-layer data path (switch and router) is “dumb, simple and minimum”, an open common Application Program Interface (API) about a flow table is defined, and meanwhile, a controller is adopted to control the whole network. Researchers may freely call the bottom-layer API for programming on the controller, thereby implementing network innovation in the future.
Based on the above concept, a Software Defined Network (SDN) emerges, and it is initially a novel network innovation architecture disclosed by research group clean slate of Standford University. At present, its core technology is OpenFlow protocol which separates a control plane (including OpenFlow Controller) and data plane (including OpenFlow Capable Switch) of network equipment, thereby implementing flexible control over network traffic and providing a good platform for innovations on the core network and applications.
The OpenFlow protocol is configured to describe a standard of information used for interaction between a controller (control unit) and a switch (forwarding unit) and an interface standard of the controller and the switch. A core part of the protocol is a set configured for an OpenFlow protocol information structure. After an OpenFlow Switch (OFS) and a controller establish a Transmission Control Protocol (TCP) connection and successfully shake hands, the controller sends a request message to obtain capabilities of the OFS (also called a data path), wherein the capabilities of the OFS including:
(1) switch features: a supported maximum buffer, a supported number of tables, a statistical capability (including a flow statistical capability, a table statistical capability, a port statistical capability, a group statistical capability and a queue statistical capability), a capability of Internet Protocol (IP) fragmentation and reassembly and a capability of avoiding a loop;
(2) flow table features: a maximum number of entries of a flow table, a supported and matched domain and mask (including: ports, metadata, message fields (Destination Media Access Control (DMAC), Source Media Access Control (SMAC), Ether Type, Virtual Local Area Network Identifier (VLAN ID), VLAN priority, IP Differentiated Services Code Point (DSCP), IP Explicit Congestion Notification (ECN), IP PROTO, Session Initiation Protocol (SIP), Double In-line Package (DIP), Transmission Control Protocol (TCP)/User Datagram Protocol (UDP) source port number and destination port number, Internet Control Message Protocol (ICMP) type, ICMP code, Address Resolution Protocol (ARP) opcode, ARP source Internet Protocol version 4 (IPv4) address, ARP target IPv4 address, ARP source hardware address, ARP target hardware address, Internet Protocol version 6 (IPv6) source address, IPv6 destination address, IPv6 Flow Label, ICMPv6 type, ICMPv6 code, Target address for ND, Source link-layer for ND, Target link-layer for ND, MPLS label, MPLS TC, MPLS BoS bit, Provider Backbone Bridge (PBB) I-SID, Logical Port Metadata, IPv6 Extension Header pseudo-field, PBB UCA header field and the like)), metadata allowed to be matched, metadata allowed to be written, supported instructions (instruction list, including: Meter, Apply-Actions, Clear-Actions, Write-Actions, Write-Metadata, Goto-Table and the like), supported actions (action list, including: Output, Set-Queue, Drop, Group, Push-Tag, Pop-Tag, Set-Field, Change-TTL and the like), and a table-miss capability;
(3) group features: a supported number of entries of a group, actions supported by a group (actions including: Output, Set-Queue, Drop, Group, Push-Tag, Pop-Tag, Set-Field, Change-TTL and the like), supported types of a group (including: OFPGT_ALL, OFPGT_SELECT, OFPGT_INDIRECT and OFPGT_FF), a group capability (OFPGFC_SELECT_WEIGHT, OFPGFC_SELECT_LIVENESS, OFPGFC_CHAINING and OFPGFC_CHAINING_CHECKS) and the like; and
(4) meter features: the number of a meter table, supported types of bandwidth (including message discarding, DSCP remark and the like), max_color and the like.
FIG. 1 is a diagram of path calculation result and flow table configuration according to a related art. Referring to FIG. 1, in a process of calculating a path result and configuring a flow table shown in FIG. 1, a method for calculating a path of an SDN mainly considers external constraint conditions such as link cost (such as the number of hops), a link bandwidth and a link attribute; and after calculating a forwarding path according to an existing path algorithm, an SDN controller transmits a flow table to each OFS on the forwarding path according to a certain strategy. However, the switches (i.e., the above OFS) have different capabilities and the switches may not support a forwarding requirement of the controller, so that the flow table is failed to be configured to cause a message forwarding failure, and even though the switches report flow table configuration error messages to the controller, the controller cannot calculate a new path.
For the problem that a controller cannot calculate a new path due to the fact of flow table configuration failure caused by different capabilities of each switch in the related art, there is yet no effective solution.